A quick note: For known reasons it does not work with about 1/4 of the modules that are on the various Mac ftp sites. These are modules which try to rely on string constants or other A4-relative data without having first properly set up their A4 world.
If you're writing modules in 68K code and you use string constants or other global data make sure your properly initialize your A4-world!
Nuff said. On to the good stuff!
Use is pretty simple. Use the standard open/close interface in the File menu to load a module and then just treat it like it was really in the Control Strip.
Your module can allocate memory and load any necessary resources during its init phase and return a handle which will be returned to you in the param field each time your SDEV is called. If you return a number less than zero it will signal that you could not initialize and the tester will not load the SDEV.
It will provide your module with a tickle heartbeat for periodic processing.
It will send your module a request to return feature bits. If your feature bits include sdevWantMouseClicks then it will pass mouse-downs to your module.
It will ask your module how wide it is and will place it in a window appropriate for that width.
It will ask your module to draw itself after initializing and whenever an update event happens in the tester's window.
A menu is provided that lets you select a signal to send to the module. An alert window will pop-up afterwards to tell you what the return value was.
Since the traps called by a CS module to display a menu/balloons/sliders/etc. were written with the Control Strip in mind and not my tester, some of these items will be positioned above the real Control Strip. This can be a little scary the first time it happens. I placed a head-patch in front of the Control Strip trap and handle menu and Balloon Help requests myself. However, sliders and graphs may appear in strange places.
If you would like a copy of the ControlStrip.h file that I use let me know and I'll mail it off. I also have a "shell" that I use for my own module development. It implements icon drawing and allocation/use of a global variable block. I have also done a module that uses the CD-ROM driver to select and play tracks from a mounted audio CD. Nothing radical in the module code but the CD-driver code has some good tidbits.
I think that's about it. If you have any comments, bugs, questions, feel free to mail me with your concerns. One thing that has already been requested is to provide a timer to see how much extra time the module is using for its tickle processing. This may appear in a future revision.